Computing devices, such as smart phones and notebook computers, have transcended being important tools in the workplace to becoming critical parts of everyone's lives. For example, people use smart phones not only for aural and textual communications, but also to obtain news and other information, to make sales and purchases, to keep up with friends and family, to find and navigate to desired destinations, and to enjoy a myriad of entertainment options. Each of these capabilities is provided by some application executing on a computing device that an end user interacts with in order to access the capabilities. Consequently, the ability of an end user to utilize such capabilities is dependent on the applications providing an efficient and convenient interaction mechanism for utilizing these capabilities.
Thus, part of an application's effectiveness at providing some capability depends on the quality of the interaction between an end user and the application. This interaction can be characterized in terms of a user interface (UI) or overall user experience (UX). If the UI or UX is poor, an application will likely go unused. Conversely, if both the UI and the UX are designed and implemented well, the likelihood that an application will become popular increases dramatically. In other words, for an application to be embraced by end users, the application cannot merely offer functionality providing some capability, even if that capability is desired by end users. Instead, the application has to provide the capability in a manner that is simple to understand, that is easy to learn or better yet to discover without training, that requires few user actions to enter commands, and so forth.
Consequently, application developers invest significant resources trying to understand how end users interact with their applications. For example, an application can monitor end-user interactions such as which menu option or screen of an application an end user selected after receiving some text notification or which virtual buttons were pressed in what sequence. These kinds of conventional end-user interactions can be monitored and then reported to developers for analysis so that the application UI or UX can be improved.
Unfortunately, such conventional reports are insufficient to enable a developer to understand all of the ways in which end users are interacting with an application. First, these kinds of end-user interactions focus on end-user behavior at a relatively high level or from a Boolean perspective (e.g., whether a virtual button is or is not pressed). Second, some applications have many end users, perhaps upwards of tens of millions of end users. Organizing, correlating, and analyzing conventional usage information at this scale becomes difficult in terms of both time and processing resources. Third, conventional approaches to monitoring and reporting end-user interactions are not capable of handling all the various facets of end-user interactions with touch screens.